
/**
 * @Project : Clion_ProgrammingExercises
 * @File : 2712
 * @Author : WangRuoyu 
 * @Date : 2023/5/29 11:20
 */

#include "iostream"

using namespace std;

class Solution {
public:
    long long minimumCost(string s) {
        long long res = 0x3f3f3f3f3f3f3f3f;
        if (s.size() == 1) {
            return 0;
        }
        if (s.size() % 2) {
            for (int k = 0; k < 2; ++k) {
                for (int l = 0; l < 2; ++l) {
                    long long tmp = 0;
                    int idx = s.size() / 2 - l;
                    while (idx >= 0 && s[idx] == char('0' + k)) {
                        idx--;
                    }
                    for (int i = idx; i >= 0; --i) {
                        if (i == idx) {
                            tmp += i + 1;
                        } else {
                            if (s[i] != s[i + 1]) {
                                tmp += i + 1;
                            }
                        }
                    }
                    idx = s.size() / 2 + 1 - l;
                    while (idx < s.size() && s[idx] == char('0' + k)) {
                        idx++;
                    }
                    for (int i = idx; i < s.size(); ++i) {
                        if (i == idx) {
                            tmp += s.size() - i;
                        } else {
                            if (s[i] != s[i - 1]) {
                                tmp += s.size() - i;
                            }
                        }
                    }
                    res = min(res, tmp);
                }
            }
        } else {
            for (int k = 0; k < 2; ++k) {
                long long tmp = 0;
                int idx = s.size() / 2;
                while (idx >= 0 && s[idx] == char('0' + k)) {
                    idx--;
                }
                for (int i = idx; i >= 0; --i) {
                    if (i == idx) {
                        tmp += i + 1;
                    } else {
                        if (s[i] != s[i + 1]) {
                            tmp += i + 1;
                        }
                    }
                }
                idx = s.size() / 2;
                while (idx < s.size() && s[idx] == char('0' + k)) {
                    idx++;
                }
                for (int i = idx; i < s.size(); ++i) {
                    if (i == idx) {
                        tmp += s.size() - i;
                    } else {
                        if (s[i] != s[i - 1]) {
                            tmp += s.size() - i;
                        }
                    }
                }
                res = min(res, tmp);
            }
        }
        return res;
    }
};

int main() {
    Solution sl;
    string s = "00";
    cout << sl.minimumCost(s);
    return 0;
}